- (void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block;
Thông thường lý do sẽ rơi vào 1 vài trường hợp như sau:
- Khi bạn viết 1 Class quản lý việc truy xuất dữ liệu từ Database, các hàm truy xuất thường trả về là 1 mảng (NSArray hoặc NSMutableArray). Điều này rất là cơ bản và thường gặp. Nhưng đôi lúc chúng ta muốn viết dưới dạng có thể duyệt qua mảng ngay trong hàm gọi truy xuất (tương tự hàm enumerateObjectsUsingBlock của class NSArray như ví dụ trên).
- Khi bạn viết 1 Class quản lý việc gởi 1 request đến 1 URL của 1 API nào đó, nhận dữ liệu trả về, parse và trả về kết quả là 1 mảng có thể duyệt được.
- Muốn thay thế kiến trúc "Delegate" hoặc "NSNotification" mà chúng ta thường sử dụng để thông báo 1 process đã hoàn tất.
- Một lý do lớn khác nữa là sử dụng Block theo kiểu này sẽ giúp cho luồng code của bạn được sắp xếp theo 1 trật tự logic hơn nhiều.